合并数列
题目 合并数列
思路分析
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//区间dp吗 反正两个集合的和一定相等 要求的是过程中零散的相等需要最少步数
// 暴力加贪心的话 还要考虑很多情况 序列大小问题 a大还是b大还是相等
//找到某个不相等的位置 就做一次合并?
//如果暴搜的话 如果题目是 将a串变成b串 倒可以用bfs的最小步数模型写
//可是它这里的操作可以在两个序列中 目标状态是什么也不知道
//暂时输出一个极端情况 如果相等 0次 否则直接输出最多要合并的情况
const int N=1e5+10;
int n,m;
string a,b;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++){
char c;cin>>c;
a+=c;
}
for(int i=0;i<m;i++){
char c;cin>>c;
b+=c;
}
if(a==b)
cout<<0<<endl;
else
cout<<max(a.size(),b.size())-1;
return 0;
}
💬 评论